/**
 * 给你一个有序数组 nums ，请你 原地 删除重复出现的元素，使每个元素 只出现一次 ，返回删除后数组的新长度。
 * 不要使用额外的数组空间，你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
 **/

#include<iostream>
#include<vector>
using namespace std;

/**
 * Solution 1:双指针
 * 指针fast表示遍历数组到达的下标位置
 * 指针slow指向下一个不同元素要填入的下标位置，两个指针初始值都设为1
 **/
class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        // 如果数组的长度为 0，则数组不包含任何元素，因此返回 0。
        if(nums.size() == 0){
            return 0;
        }
 
        int slow = 1;
        for(int fast=1; fast<nums.size(); fast++){
            if(nums[fast] != nums[fast - 1]){
                // 将不同的元素移到新的位置
                nums[slow] = nums[fast];
                slow ++;
            }
        }
        return slow;

    }
};